function mockFetch(url, options = {}) {
    return new Promise((resolve, reject) => {
        const { delay = 1000 } = options;


        // 模拟延迟以模仿网络请求的时间
        setTimeout(() => {
            try {
                // 根据 URL 和方法动态生成响应
                const response = createMockResponse(url, options.method);
                resolve(response);
            } catch (error) {
                // 统一错误处理
                reject(error);
            }
        }, delay);
    });
}


function createMockResponse(url, method = 'GET') {
    // 模拟不同 URL 和方法的响应
    const responseData = {
        'https://api.example.com/data': { message: 'Hello, world!' },
        'https://api.example.com/post': { id: 1, status: 'created' },
    };

    // 检查 URL 是否存在
    if (!(url in responseData)) {
        throw new Error(`404 Not Found: ${url}`);
    }

    // 检查方法是否允许（例如不允许 POST 访问 GET 的 URL）
    if (url === 'https://api.example.com/data' && method !== 'GET') {
        throw new Error(`405 Method Not Allowed: ${method}`);
    }

    // 返回标准的响应对象
    return {
        ok: true,
        status: 200,
        json: () => Promise.resolve(responseData[url]),
        text: () => Promise.resolve(JSON.stringify(responseData[url])),
    };
}



// 使用模拟的 fetch 函数
// 内部处理正常，拿到的对象为 resolve() 封装的对象
mockFetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));


// 下面是上面发生了错误
mockFetch('https://api.example.com/dataEr')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));